flowchart TD
%% 시작 노드: 라벨을 따옴표로 감싸서 안전하게 처리
Start(("START: python main.py")) --> Menu{"모드 선택
(1 또는 2)"}
%% 1. 에이전트 선택 단계
subgraph Init [초기화 단계]
direction TB
PxBoot["1. PxAgent 가동
설교 자료 생성 비서"]
DayBoot["2. DayMedi 가동
묵상 에세이 작가"]
end
Menu -- "1 입력" --> PxBoot
Menu -- "2 입력" --> DayBoot
%% 2. 공통 루프 단계
subgraph EventLoop [메인 실행 루프]
InputUser[/"USER 입력 대기
(URL 또는 명령)"/]
CheckExit{"종료 명령인가?
(exit/quit)"}
RunAgent{"선택된 에이전트 실행
bot.run()"}
end
PxBoot --> InputUser
DayBoot --> InputUser
InputUser --> CheckExit
CheckExit -- Yes --> End((종료))
CheckExit -- No --> RunAgent
%% 3-A. PxAgent 워크플로우
subgraph PxFlow [PxAgent 프로세스]
direction TB
PxCheckData{"URL + 시간 정보가
포함되었는가?"}
PxAskData["시간/URL 요청 메시지 반환"]
PxProcess["YouTube 구간 전사
(Start ~ End)"]
PxGen["LLM: 구조화 문서 생성
(기도문, 질문, 요약 등)"]
PxFile["파일 저장: RTF, DOCX"]
PxEmail["이메일 발송"]
end
%% 3-B. DayMedi 워크플로우
subgraph DayFlow [DayMedi 프로세스]
direction TB
DayCheckData{"URL이
포함되었는가?"}
DayAskData["URL 요청 메시지 반환"]
DayProcess["YouTube 전체 전사
(Full Transcript)"]
DayGen["LLM: 묵상 에세이 작성
(감동적인 작가 모드)"]
DayFile["파일 저장: TXT
(바탕화면)"]
end
%% 연결 로직
RunAgent -- PxAgent --> PxCheckData
RunAgent -- DayMedi --> DayCheckData
%% PxAgent 흐름
PxCheckData -- No --> PxAskData
PxCheckData -- Yes --> PxProcess --> PxGen --> PxFile --> PxEmail
PxEmail --> PxOut[/"결과 출력"/]
PxAskData --> PxOut
%% DayMedi 흐름
DayCheckData -- No --> DayAskData
DayCheckData -- Yes --> DayProcess --> DayGen --> DayFile
DayFile --> DayOut[/"결과 출력"/]
DayAskData --> DayOut
%% 루프 복귀
PxOut --> InputUser
DayOut --> InputUser
%% 스타일링
style Start fill:#f9f,stroke:#333,stroke-width:2px
style Menu fill:#ff9,stroke:#333
style PxFlow fill:#e1f5fe,stroke:#01579b
style DayFlow fill:#f3e5f5,stroke:#4a148c
style End fill:#333,stroke:#fff,color:#fff